class SequenceQueue:
    def __init__(self):
        self.MaxQueueSize = 10
        self.s = [None for x in range(0, self.MaxQueueSize)]
        self.front = 0
        self.rear = 0

    # 由用户输入元素将其进队的函数
    def CreateQueueByInput(self):
        data = input("请输入元素(继续输入请按回车，结束输入请按“#”：")
        while data != '#':
            self.EnQueue(data)
            data = input("请输入元素：")

    # 判断队列是否为空的函数
    def IsEmptyQueue(self):
        if self.front == self.rear:
            iQueue = True
        else:
            IQueue = False
        return IQueue

    # 元素入队的函数
    def EnQueue(self, x):
        if self.rear < self.MaxQueueSize - 1:
            self.rear = self.rear + 1
            print("当前进队元素为：", x)
        else:
            print("队列已满，无法入队")
            return

    # 获取当前队首元素的函数
    def GetHead(self):
        if self.IsEmptyQueue():
            print("队列为空，无法输出队首元素")
            return
        else:
            return self.s[self.front + 1]

    # 获取队列的长度
    def GetQueueLength(self):
        if self.IsEmptyQueue():
            print("队列为空")
            return
        else:
            print("\n队列的长度为：\n", self.rear - self.front)
            return self.rear - self.front

    # 元素出队的函数（从队头出队）
    def DeQueue(self):
        if self.IsEmptyQueue():
            print("队列为空，无法出队")
            return
        else:
            self.front = self.front + 1
            return self.s[self.front]

    # 遍历队列所有元素
    def TraverseQueue(self):
        for Element in self.s:
            if Element is None:
                continue
            else:
                print(Element)

# (1)	初始化一个队列SequenceQueue。
# (2)	判断队列是否为空。
# (3)	将元素1、3、5、7、9依次进队至队满。
# (4)	遍历队列所有元素。
# (5)	获取队列的队头元素。
# (6)	获取队列的长度。
# (7)	将队中元素出队并输出。
# (8)	尝试将一个新元素进队。
if __name__ == '__main__':
    sq = SequenceQueue()
    sq.CreateQueueByInput()
    sq.IsEmptyQueue()
    sq.TraverseQueue()
    sq.GetHead()
    sq.GetQueueLength()
    sq.DeQueue()
    sq.GetQueueLength()
    sq.EnQueue(4)
    sq.GetQueueLength()
